$(function () {
    // 需求1：初始化文章分类列表
    /* 添加，修改，删除后都要重新 渲染，所有封装成函数 */

    let layer = layui.layer
    // 调用函数
    initArtCateList()

    // 封装
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates'
        }).then(({ data: res }) => {
            // console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }

            // 成功后直接渲染
            let arr = []
            // 遍历返回的数据
            res.data.forEach(function (ele) {

                if (ele.Id < 0) return
                arr.push(`
                 <tr>
                        <td>${ele.Id}</td>
                        <td>${ele.name}</td>
                        <td>${ele.alias}</td>
                        <td>
                            <button data-id="${ele.Id}" class="layui-btn btn-edit layui-btn-xs">修改</button>
                            <button data-id="${ele.Id}" class="layui-btn del-edit layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                    </tr>
                `)

            })

            // 循环之外，赋值
            $('tbody').empty().html(arr.join(""))
        })
    }


    // 需求2：点击按钮，弹出添加类别对话框
    // 定义一个全局变量，接收open()的索引值，将来用于关闭对话框
    let indexAdd = 0
    $("#addBtn").on('click', function () {
        // layui官网中，内置模块-弹出层-open()-各种属性配置完成
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '260px'],

            // 内容放入表单
            content: `
                <form id='addForm' class="layui-form" action="">
        <!-- 1分类名称 -->
        <div class="layui-form-item">
            <label class="layui-form-label">分类名称</label>
            <div class="layui-input-block">
                <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                    class="layui-input">
            </div>
        </div>

        <!-- 2分类别名 -->
        <div class="layui-form-item">
            <label class="layui-form-label">分类别名</label>
            <div class="layui-input-block">
                <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                    class="layui-input">
            </div>
        </div>

        <!-- 3按钮 -->
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class=" layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
            `
        })
    })


    // 需求3 ：添加文章分类 -  后添加的动态元素，需要使用事件委托
    $('body').on('submit', '#addForm', function (e) {
        e.preventDefault()
        // 添加分类
        axios({
            method: 'post',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(({ data: res }) => {
            // console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }
            // 成功提示  提示，初始化文章分类
            layer.msg(res.message)
            initArtCateList()

            // 关闭对话框
            layer.close(indexAdd)
        })
    })


    // 需求4：修改分类弹出层
    let indexEdit = 0
    $("tbody").on('click', '.btn-edit', function () {
        // 点击编辑按钮做两件事 1 弹出层
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '260px'],

            // 内容放入表单
            content: `
                <form id='editForm' class="layui-form" lay-filter='editForm' action="">

                <!-- 0 隐藏域，填充Id值  将来修改数据的时候使用 -->
                <input type="hidden" name="Id">

        <!-- 1分类名称 -->
        <div class="layui-form-item">
            <label class="layui-form-label">分类名称</label>
            <div class="layui-input-block">
                <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                    class="layui-input">
            </div>
        </div>

        <!-- 2分类别名 -->
        <div class="layui-form-item">
            <label class="layui-form-label">分类别名</label>
            <div class="layui-input-block">
                <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                    class="layui-input">
            </div>
        </div>

        <!-- 3按钮 -->
        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
            `
        })

        // 点击编辑按钮做两件事 2 赋值
        // (获取数据，和渲染数据，要写到.btn-edit的点击事件里面)
        let id = $(this).attr('data-id')
        // alert(id)

        // 发送Ajax
        axios({
            method: 'get',
            /* /:id 动态参数（路由参数）
            特点：/不能省略， ：一定要去掉，id是动态变化的 */
            url: '/my/article/cates/' + id
        }).then(({ data: res }) => {
            // console.log(res);
            if (res.status != 0) {
                return layer.msg(res.message)
            }
            // 成功后渲染
            layui.form.val('editForm', res.data)
        })
    })


    // 需求5：修改文字分类 
    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault()
        // 修改分类
        axios({
            method: 'post',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(({ data: res }) => {
            // console.log(res);
            if (res.status !== 0) {
                return layer.msg(res.message)
            }
            // 成功提示  提示，初始化文章分类
            layer.msg(res.message)
            initArtCateList()

            // 关闭对话框
            layer.close(indexEdit)
        })
    })

    // 需求6 删除
    $("tbody").on('click', '.del-edit', function () {
        // 获取自定义属性  一定要在弹窗外面
        let id = $(this).attr('data-id')
        // 弹框
        layer.confirm('确认删除吗？', { icon: 3, title: '提示' }, function (index) {
            // 发送Ajax
            axios({
                method: 'get',
                // /必须保留 :必须删除
                url: '/my/article/deletecate/' + id
            }).then(({ data: res }) => {
                // console.log(res);
                if (res.status !== 0) {
                    return layer.msg(res.message)
                }
                // 成功提示，初始化文章分类列表
                layer.msg(res.message)
                initArtCateList()

            })
            // 关闭询问框
            layer.close(index)
        })
    })
})